import { customRef, ref } from 'vue'

export default function(initValue:any = '', delay:number) {
  // track(跟踪)、trigger(触发)
  let msg = customRef((track, trigger) => {
    let timer:number
    return {
      // 自定义ref被读取时调用
      get() {
        track()  // 告诉Vue这个数据很重要，你要对这个自定义Ref进行持续关注，一旦msg变化就去更新
        return initValue
      },
      // 自定义ref被修改时调用
      set(value) {
        console.log('value', value)
        clearTimeout(timer)
        timer = setTimeout(() => {
          initValue = value
          trigger()  // 通知Vue，这个自定义Ref发生修改了
        }, delay);
      }
    }
  })
  return { msg }
}